import axios from 'axios'
import { getAdminToken } from './auth'

// 创建axios实例
const api = axios.create({
  baseURL: '/api',  // 使用相对路径，让请求通过 Nginx 代理
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json'
  }
})

// 请求拦截器
api.interceptors.request.use(
  config => {
    // 为管理员API添加认证头
    if (config.url && (
      config.url.includes('/queue/') || 
      config.url.includes('/logs/') || 
      config.url.includes('/dashboard/') ||
      config.url.includes('/admin/')
    )) {
      const token = getAdminToken()
      if (token) {
        config.headers.Authorization = `Bearer ${token}`
      }
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

// 响应拦截器
api.interceptors.response.use(
  response => {
    return response
  },
  error => {
    // 统一错误处理
    if (error.response) {
      // 服务器返回错误状态码
      console.error('API Error:', error.response.data)
    } else if (error.request) {
      // 请求已发出但没有收到响应
      console.error('Network Error:', error.request)
    } else {
      // 其他错误
      console.error('Error:', error.message)
    }
    return Promise.reject(error)
  }
)

// API方法
export default {
  // 获取服务列表
  getServices() {
    return api.get('/services')
  },

  // 用户注册
  register(userData) {
    return api.post('/register', userData)
  },

  // 获取申请状态
  getStatus(requestId) {
    return api.get(`/status/${requestId}`)
  },

  // 健康检查
  healthCheck() {
    return api.get('/health')
  },

  // 队列管理API
  // 获取队列状态
  getQueueStatus() {
    return api.get('/queue/status')
  },

  // 获取待确认用户
  getPendingUsers() {
    return api.get('/queue/pending')
  },

  // 获取已确认用户
  getConfirmedUsers() {
    return api.get('/queue/confirmed')
  },

  // 获取用户详情
  getUserDetails(requestId) {
    return api.get(`/queue/user/${requestId}`)
  },

  // 移除用户
  removeUser(requestId) {
    return api.delete(`/queue/user/${requestId}`)
  },

  // 获取统计信息
  getQueueStatistics() {
    return api.get('/queue/statistics')
  },

  // 清理过期请求
  cleanupExpiredRequests(hours) {
    return api.post('/queue/cleanup', { hours })
  },

  // 获取用户日志
  getUserLogs(requestId) {
    return api.get(`/logs/${requestId}`)
  },

  // 管理员认证
  adminAuth(password) {
    return api.post('/admin/auth', { password })
  },

  // 获取当前管理员密码
  getCurrentAdminPassword() {
    return api.get('/admin/current-password')
  },

  // 重新生成管理员密码
  regenerateAdminPassword() {
    return api.post('/admin/regenerate')
  },

  // 获取仪表板数据
  getDashboardData() {
    return api.get('/dashboard/data')
  }
}


